Lecture 9 - Cryptography
علم التشفير (Cryptography) هو الفن والعلم اللي بنستخدم فيه معادلات رياضية عشان نحمي بياناتنا. الفكرة ببساطة إننا بنحوّل الكلام المفهوم (Plaintext) لـ "طلاسم" غير مفهومة (Ciphertext)، عشان نمنع أي حد غير مصرح ليه إنه يقرأ أو يعدل البيانات دي.
1. مصطلحات أساسية (Terminologies)
عشان نفهم التشفير، لازم نكون عارفين لغة المجال:
-ا Plaintext / Cleartext: النص الأصلي المقروء (زي رسالة "مرحبا").
-ا Ciphertext: النص المُشفر أو الطلاسم (الرسالة بعد ما اتشفرت).
-ا Encryption: عملية التشفير (تحويل الـ Plaintext لـ Ciphertext).
-ا Decryption: عملية فك التشفير (تحويل الـ Ciphertext لـ Plaintext تاني).
-ا Cipher: الخوارزمية (Algorithm) أو الخطوات اللي بنمشي عليها عشان نشفر أو نفك التشفير.
-ا Key: المفتاح المستخدم في معادلة التشفير.
-ا Cryptanalysis: علم تحليل و كسر التشفير (الناس اللي بتعمل كده اسمهم Attackers أو Cryptanalysts).
-ا Cryptology: العلم الشامل اللي بيضم التشفير (Cryptography) وكسر التشفير (Cryptanalysis) مع بعض.
النص الأصلي (Plaintext) ⬅️ خوارزمية ومفتاح التشفير ⬅️ النص المشفر (Ciphertext) ⬅️ خوارزمية ومفتاح فك التشفير ⬅️ النص الأصلي يرجع تاني.
2. أهداف التشفير (Goals of Cryptography)
التشفير مش بس بيخبي البيانات، ده بيحقق 4 أهداف أساسية:
1.ا Confidentiality (السرية): محدش يقدر يقرأ البيانات غير الشخص المقصود.
2.ا Integrity (السلامة): البيانات ماتتعدلش في السكة بدون ما نكتشف.
3.ا Authentication (الموثوقية): التأكد من هوية الشخص اللي باعت الرسالة.
4.ا Non-repudiation (عدم الإنكار): المرسل ميقدرش ينكر إنه بعت الرسالة.
3. أنواع خوارزميات التشفير (Encryption Types)
فيه مدرستين كبار في عالم التشفير بنقسمهم حسب "المفتاح" المستخدم:
| وجه المقارنة | Symmetric Encryption (التشفير المتماثل) | Asymmetric Encryption (التشفير غير المتماثل) |
|---|---|---|
| عدد المفاتيح | مفتاح واحد فقط (نفس المفتاح للتشفير وفك التشفير) | مفتاحين (Public Key للتشفير، و Private Key لفك التشفير) |
| التكلفة والسرعة | أسرع وأقل تكلفة (Cost effective) | أبطأ وأكثر تكلفة (More costly) |
| الأمان | الفكرة كلها إنك إزاي تنقل المفتاح ده للطرف التاني بأمان! | أكثر أماناً (لأن الـ Private Key بيفضل معاك ومبيتبعتش لحد) |
| مثال للتوضيح | قفل بمفتاح واحد، بتعمل منه نسخة وتديها لصاحبك. | صندوق بريد مقفول؛ أي حد يقدر يحط رسالة فيه (Public)، بس إنت الوحيد اللي معاك المفتاح تفتحه (Private). |
4. خوارزميات التشفير الكلاسيكية (Classical Ciphers)
دي طرق التشفير القديمة اللي كانت بتعتمد على تبديل الحروف، وهي أساس فهم التشفير الحديث:
أ. تشفير قيصر (Caesar Shift Cipher)
- بيعتمد على تشفيت (Shift) حروف الأبجدية بعدد معين متفق عليه.
- اتسمى على اسم "يوليوس قيصر" اللي كان بيستخدم (Shift = 3) عشان يحمي رسايله العسكرية.
النص الأصلي: TREATY IMPOSSIBLE
طريقة التشفير: هنحرك كل حرف 3 خطوات (الـ A تبقى D، الـ T تبقى W).
النص المشفر: WUHDWB LPSRVVLEOH
ب. تشفير ROT13
- هو ببساطة حالة خاصة من Caesar Cipher، بس الـ Shift بيكون بـ 13 خطوة ثابتة.
- ميزته: بما إن الحروف الإنجليزية 26 حرف، لو شفرت بـ 13، وفكيت التشفير بـ 13 تاني.. هترجع لنفس الحرف!
ج. تشفير Atbash
- بيعتمد على عكس الحروف الأبجدية (بدون أي مفتاح خارجي).
- الحرف الأول (A) يتبدل بالأخير (Z).
- الحرف التاني (B) يتبدل باللي قبل الأخير (Y)، وهكذا.
د. تشفير Playfair (Playfair Cipher) بالتفصيل
تشفير Playfair بيعتمد على تحويل الحروف لـ أزواج (حرفين حرفين) وتشفيرهم باستخدام شبكة 5x5.
1. تكوين الشبكة (The Grid)
بنرص حروف الأبجدية الإنجليزية في جدول 5×5. وبما إن الحروف 26، بندمج حرفي الـ (I و J) في مربع واحد عشان يبقوا 25.
(بدون استخدام مفتاح، الشبكة بتكون مترتبة أبجدياً كده):
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
2. تجهيز الكلمة قبل التشفير
- بنقسم الكلمة لـ أزواج (Pairs).
- لو لقينا حرفين متكررين ورا بعض في نفس الزوج، بنفصل بينهم بحرف
X. - لو الكلمة اتبقى منها حرف لوحده في الآخر، بنزودله
X.
- كلمة WORLD: هتتقسم لـ
WOوRLوالـ D لوحدها هنزودلها X تبقىDX. (النتيجة:WO RL DX) - كلمة HELLO: هتتقسم لـ
HE، بعدين يقابلناLLفنبدلهم بـ X تبقىLX، ويتبقىOX. (النتيجة:HE LX OX)
3. قواعد التشفير (بنبص على مكان الحرفين في الجدول)
القاعدة الأولى: لو الحرفين في "نفس الصف" ➡️ (بناخد الحرف اللي يمين كل واحد)
- مثال: عايزين نشفر الزوج
GI - الـ G يمينها H، والـ I يمينها K. (النتيجة:
HK) - (ملاحظة: لو الحرف في آخر الصف زي E، بنلف ونجيب أول حرف في نفس الصف A).
القاعدة التانية: لو الحرفين في "نفس العمود" ⬇️ (بناخد الحرف اللي تحت كل واحد)
- مثال: عايزين نشفر الزوج
CH - الـ C تحتها H، والـ H تحتها N. (النتيجة:
HN) - (ملاحظة: لو الحرف في آخر العمود زي Z، بنلف ونجيب أول حرف من فوق في نفس العمود E).
القاعدة التالتة: لو الحرفين بيعملوا "مستطيل" 🔀 (بناخد الزوايا العكسية)
- مثال: عايزين نشفر الزوج
MT(الـ M في الصف التالت، والـ T في الصف الرابع). - بنرسم مستطيل تخيلي أطرافه M و T.
- بناخد الحروف اللي في الزاويتين التانيين للمستطيل، بس بنبدا باللي في نفس صف الحرف الأول.
- الـ M في نفس صفها O، والـ T في نفس صفها R. (النتيجة:
OR)
هـ. خوارزمية هيل (Hill Algorithm) بالتفصيل
دي طريقة رياضية متقدمة بتعتمد على الجبر الخطي وضرب المصفوفات (Matrix Multiplication).
الفكرة إننا مش بنشفر حرف بحرف لوحده، لأ إحنا بناخد "مجموعة حروف" مع بعض (مثلاً كل 3 حروف) ونضربهم في مصفوفة (هي دي المفتاح) عشان نطلع 3 حروف مشفرين مختلفين تماماً.
خطوات التشفير:
- تحويل الحروف لأرقام: بنرقم الأبجدية الإنجليزية من 0 لـ 25.
- (A=0, B=1, C=2, ..., Z=25).
- تقسيم الكلمة: بنقسم الكلمة لمجموعات (حسب حجم مصفوفة المفتاح، غالباً كل 3 حروف مع بعض).
- تطبيق معادلة التشفير:
: مصفوفة النص الأصلي (Plaintext). : مصفوفة المفتاح (Key Matrix). : بنجيب "باقي القسمة" على 26 (عشان الناتج يفضل دايماً رقم من 0 لـ 25 ونقدر نحوله لحرف).
- تحويل الأرقام لحروف: الأرقام الناتجة بنرجعها حروف تاني فنجيب النص المشفر.
!Pasted image 20260520005839.png
الهدف: تشفير كلمة pay (وهي جزء من رسالة paymoremoney).
الخطوة 1: نحول pay لأرقام:
p= 15a= 0y= 24
إذن مصفوفة الكلمةهي: [15, 0, 24]
الخطوة 2 & 3: نضرب
حسب المثال في المحاضرة، الأرقام الناتجة طلعت: [17, 17, 11]
الخطوة 4: نرجع الأرقام الجديدة لحروف:
- 17 =
R - 17 =
R - 11 =
L
النتيجة: كلمة pay اتشفرت وبقت RRL!
فك التشفير (Decryption)
عشان نرجع الرسالة لأصلها، بنستخدم نفس الطريقة بس بنعكس المفتاح.
بنضرب النص المشفر
المعادلة:
!Pasted image 20260520005915.png